package com.AOPtest;

import com.myspring.pojo.User;
import org.aopalliance.aop.Advice;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class LogAOP {

    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        long start=System.currentTimeMillis();
        System.out.println("方法名："+pjp.getSignature().getName()+"\n方法参数："+ Arrays.toString(pjp.getArgs()));
        System.err.println(pjp.getSignature().getName()+"方法开始时间："+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date(start)));
        //新增用户时,密码必须是6位以上
        if(pjp.getSignature().getName().equals("add")){
            User user=(User)pjp.getArgs()[0];
            if(user.getPass().length()<=6){
                //return 0;
                throw new RuntimeException("密码长度太短!");
            }
        }
         Object proceed=pjp.proceed();
        long end=System.currentTimeMillis();
        System.err.println(pjp.getSignature().getName()+"方法结束时间："+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date(end)));
        System.err.println(pjp.getSignature().getName()+"方法共用时："+(end-start)+"毫秒,返回了："+proceed);
        return proceed;

    }
}
